import { Button, Grid, Tab, Tabs, Typography } from '@mui/material'; import { Box, Container } from '@mui/system'; import { dehydrate, QueryClient } from '@tanstack/react-query'; import Image from 'next/image'; import { useRouter } from 'next/router'; import React, { useState } from 'react'; import Loader from '../../components/loader/Loader'; import ProductCard from '../../components/product-card/ProductCard'; import TabPanel from '../../components/tab-panel/TabPanel'; import { useFetchSingleProduct } from '../../hooks/useFetchProductData'; import { getProductData } from '../../requests/products/producDataRequest'; import { useStore, useStoreUpdate } from '../../store/cart-context'; const SingleProduct = () => { const { addCartValue } = useStoreUpdate(); const { cartStorage } = useStore(); const router = useRouter(); const { customId } = router.query; const { data, isLoading } = useFetchSingleProduct(customId); // const productCategory = data?.product.category; const [value, setValue] = useState(0); const addProductToCart = (quantity) => addCartValue(data.product, quantity); const inCart = cartStorage?.some( (item) => item.product.customID === data?.product.customID ) ? true : false; const handleChange = (event, newValue) => { setValue(newValue); }; function a11yProps(index) { return { id: `simple-tab-${index}`, 'aria-controls': `simple-tabpanel-${index}`, }; } if (isLoading) { return ; } return ( {data.product.name} product {data.product.description} ${data.product.price} {data.product.category} Similar Products You May Like {data.similarProducts.map((product) => ( ))} ); }; export const getServerSideProps = async (context) => { const { params } = context; const { customId } = params; const queryClient = new QueryClient(); await queryClient.prefetchQuery( ['product', customId], async () => await getProductData(customId) ); return { props: { dehydratatedState: dehydrate(queryClient), }, }; }; export default SingleProduct;